The present invention relates generally to memory management and more particularly to a more efficient storage of memory management characteristics for data in memory.
The amount of data needed by applications running in a computer system has greatly increased the past few years, and the rate of this increase shows no sign of abating. To handle this data, computer systems need to incorporate improved ways to manage data in memory.
Data stored in memory is typically arranged in pages. These pages are stored at physical addresses in one or more memory devices, for example one or more DRAMs and hard disk drives. A DRAM can only store a limited amount of data, but is able to quickly provide it for use by an application. A hard disk drive stores a great deal of data, but is slower to provide it.
Access times make DRAM memory the more desirable destination, but space is short. Accordingly, pages that are not needed by an application can be moved from DRAMs to a higher level of memory, such as a hard disk drive. Similarly, when a page is needed but not available in DRAMS—a page fault—the page can be read back from the disk to the DRAM. When pages are swapped in this manner, their physical addresses change.
It is undesirable and inefficient for applications running on a computer system to keep track of these changing physical addresses. Thus, applications use virtual addresses, which may remain static. Virtual addresses can be translated to physical addresses using a translation lookaside buffer, which includes a number of page table entries. As a page moves, the page table entry is updated.
Page table entries can be used to store other characteristics of a page as well as its physical address. A virtual memory manager (VMM) can use these characteristics in managing the data in memory. But storage of these characteristics can be complicated, requiring complex software and hardware.
Accordingly, what is needed are circuits, methods, and apparatus that provide an efficient storage of these characteristics.